#include <iostream>

#include "ServerCalculator.hpp"

void Usage()
{
    std::cout << "\n\t" << "Usage: ./servercal port[>1024]" << std::endl
              << std::endl;
}

int main(int argc, char *argv[])
{
    if (argc != 2)
    {
        Usage();
        exit(0);
    }
    ServerCal cal;
    uint16_t port = std::stoi(argv[1]);
    TcpServer *tsvp = new TcpServer(port, std::bind(&ServerCal::Calculator, &cal, std::placeholders::_1));
    tsvp->Init();
    tsvp->Start();

    return 0;
}
//     int main(int argc, char *argv[])
// {
//     // Request req(123456, 123456, '+');
//     // std::string s;
//     // req.Serialize(&s);
//     // cout << s << endl;
//     // cout << "---------------------" << endl;

//     // s = Encode(s);
//     // cout << s << endl;
//     // cout << "---------------------" << endl;

//     // Decode(s, &s);
//     // cout << s << endl;
//     // cout << "---------------------" << endl;

//     // req.Deserialize(s);
//     // cout << req.GetNum1() << endl;
//     // cout << req.GetOp() << endl;
//     // cout << req.GetNum2() << endl;

//     // // ----------------
//     // cout << "######################" << endl;
//     // cout << "######################" << endl;

//     // Response res(200, 0);
//     // std::string r;
//     // res.Serialize(&r);
//     // cout << r << endl;
//     // cout << "---------------------" << endl;

//     // r = Encode(r);
//     // cout << r << endl;
//     // cout << "---------------------" << endl;

//     // Decode(r, &r);
//     // cout << r << endl;
//     // cout << "---------------------" << endl;

//     // res.Deserialize(r);
//     // cout << res.GetResult() << endl;
//     // cout << res.GetCode() << endl;

//     return 0;
// }